package com.manage.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 诉前对象 cm_before_litigation
 *
 * @author ruoyi
 * @date 2025-10-05
 */
@Data
@TableName("cm_before_litigation")
public class CmBeforeLitigation
{
    private static final long serialVersionUID = 1L;

    /** id */
    @TableId
    private Long id;

    /** 外部唯一id */
    private String publicId;

    /** 案件id */
    private Long caseId;

    /** 诉讼机关 */
    private String court;

    /** 律师函id */
    private Long lawLetterId;

    /** 面谈凭证id列表 */
    private String meetingVoucherIds;

    /** 短信催收截图id列表 */
    private String smsRecordScreenshotIds;

    /** 原告全名 */
    private String plaintiffFullName;

    /** 原告住所地 */
    private String plaintiffAddress;

    /** 原告统一社会信用代码 */
    private String plaintiffUnifiedCreditCode;

    /** 原告法定代表人 */
    private String plaintiffLegalRep;

    /** 原告法定代表人职务 */
    private String plaintiffLegalRepTitle;

    /** 贷款账号 */
    private String loanAccount;

    /** 贷款合同名称 */
    private String loanContractName;

    /** 签约时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date contractSigningDate;

    /** 被告身份证号码 */
    private String defendantIdNum;

    /** 被告出生年月日 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date defendantBirthdate;

    /** 被告民族 */
    private String defendantEthnicity;

    /** 被告性别：0男，1女 */
    private String defendantGender;

    /** 被告联系方式 */
    private String defendantContact;

    /** 被告身份证地址 */
    private String defendantIdAddress;

    /** 被告通讯地址 */
    private String defendantMailAddress;

    /** 抵押物地址 */
    private String collateralAddress;

    /** 抵押物产权证号 */
    private String collateralPropertyNum;

    /** 不动产单元号 */
    private String collateralUnitNum;

    /** 抵押物地址(产调) */
    private String collateralSurveyAddress;

    /** 建筑面积 */
    private BigDecimal collateralArea;

    /** 贷款种类 */
    private String loanType;

    /** 尚欠本金 */
    private BigDecimal remainingPrincipal;

    /** 尚欠利息 */
    private BigDecimal remainingInterest;

    /** 尚欠罚息 */
    private BigDecimal remainingPenaltyInterest;

    /** 约定律师费 */
    private BigDecimal agreedAttorneyFee;

    /** 欠款截止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date arrearsDeadline;

    /** 贷款金额 */
    private BigDecimal loanAmount;

    /** 贷款起始日 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date loanStartDate;

    /** 贷款到期日 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date loanDueDate;

    /** 贷款期限 */
    private Long loanTerm;

    /** 贷款利率 */
    private BigDecimal loanInterestRate;

    /** 加/减 BP */
    private String bpAdjustment;

    /** 执行年利率 */
    private BigDecimal executionInterestRate;

    /** 罚息及复利计收 */
    private BigDecimal penaltyCompoundInterest;

    /** 逾期年利率 */
    private BigDecimal overdueInterestRate;

    /** 每年利率调整日 */
    private String annualRateAdjustDate;

    /** 重定价日 */
    private String repricingDate;

    /** 还款方式 */
    private String repaymentMethod;

    /** 实现债权费用 */
    private BigDecimal debtRealizationCost;

    /** 诉请依据文件id */
    private Long petitionBasisId;

    /** 管辖 */
    private String jurisdiction;

    /** 利率2 */
    @TableField(value = "interest_rate_2")
    private BigDecimal interestRate2;

    /** 罚息2 */
    @TableField(value = "penalty_interest_2")
    private BigDecimal penaltyInterest2;

    /** 复利 */
    private String compoundInterest;

    /** 还款方式2 */
    @TableField(value = "repayment_method_2")
    private String repaymentMethod2;

    /** 律师费2 */
    @TableField(value = "attorney_fee_2")
    private BigDecimal attorneyFee2;

    /** 有无送达地址：0无，1有 */
    private Integer hasServiceAddress;

    /** 送达地址 */
    private String serviceAddress;

    /** 已还本金 */
    private BigDecimal repaidPrincipal;

    /** 历年收息额 */
    private BigDecimal annualInterestIncome;

    /** 最后还款日 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastRepaymentDate;

    /** 逾期累计金额 */
    private BigDecimal totalOverdueAmount;

    /** 办卡时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date cardApplicationDate;

    /** 卡号 */
    private String creditCardNum;

    /** 手续费的计算标准 */
    private String feeCalculationStandard;

    /** 违约责任 */
    private String breachOfContract;

    /** 解除条件 */
    private String terminationConditions;

    /** 诉请依据 */
    private String petitionBasis;

    /** 提示说明的具体方式以及时间地点 */
    private String promptDescription;

    /** 贷款额度 */
    private BigDecimal creditLine;

    /** 贷款额度有效期间 */
    private String creditLineValidPeriod;

    /** 签约银行卡号 */
    private String contractedBankCardNum;

    /** 借款单笔数 */
    private Long numberOfLoans;

    /** 担保合同名 */
    private String guaranteeContractName;

    /** 签订时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date guaranteeSigningDate;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date guaranteeStartDate;

    /** 担保期限 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date guaranteeDeadline;

    /** 担保的主债权最高限额 */
    private BigDecimal guaranteeMaxAmount;

    /** 借款单笔数2 */
    @TableField(value = "number_of_loans_2")
    private Long numberOfLoans2;

    /** 担保人 */
    private String guarantor;

    /** 起诉状 */
    private String indictment;

    /** 授权所函 */
    private String lawFirmAuthorizationLetter;

    /** 补充证据材料id列表 */
    private String supplementaryEvidenceIds;

    /**创建时间*/
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**更新时间*/
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("publicId", getPublicId())
            .append("caseId", getCaseId())
            .append("court", getCourt())
            .append("lawLetterId", getLawLetterId())
            .append("meetingVoucherIds", getMeetingVoucherIds())
            .append("smsRecordScreenshotIds", getSmsRecordScreenshotIds())
            .append("plaintiffFullName", getPlaintiffFullName())
            .append("plaintiffAddress", getPlaintiffAddress())
            .append("plaintiffUnifiedCreditCode", getPlaintiffUnifiedCreditCode())
            .append("plaintiffLegalRep", getPlaintiffLegalRep())
            .append("plaintiffLegalRepTitle", getPlaintiffLegalRepTitle())
            .append("loanAccount", getLoanAccount())
            .append("loanContractName", getLoanContractName())
            .append("contractSigningDate", getContractSigningDate())
            .append("defendantIdNum", getDefendantIdNum())
            .append("defendantBirthdate", getDefendantBirthdate())
            .append("defendantEthnicity", getDefendantEthnicity())
            .append("defendantGender", getDefendantGender())
            .append("defendantContact", getDefendantContact())
            .append("defendantIdAddress", getDefendantIdAddress())
            .append("defendantMailAddress", getDefendantMailAddress())
            .append("collateralAddress", getCollateralAddress())
            .append("collateralPropertyNum", getCollateralPropertyNum())
            .append("collateralUnitNum", getCollateralUnitNum())
            .append("collateralSurveyAddress", getCollateralSurveyAddress())
            .append("collateralArea", getCollateralArea())
            .append("loanType", getLoanType())
            .append("remainingPrincipal", getRemainingPrincipal())
            .append("remainingInterest", getRemainingInterest())
            .append("remainingPenaltyInterest", getRemainingPenaltyInterest())
            .append("agreedAttorneyFee", getAgreedAttorneyFee())
            .append("arrearsDeadline", getArrearsDeadline())
            .append("loanAmount", getLoanAmount())
            .append("loanStartDate", getLoanStartDate())
            .append("loanDueDate", getLoanDueDate())
            .append("loanTerm", getLoanTerm())
            .append("loanInterestRate", getLoanInterestRate())
            .append("bpAdjustment", getBpAdjustment())
            .append("executionInterestRate", getExecutionInterestRate())
            .append("penaltyCompoundInterest", getPenaltyCompoundInterest())
            .append("overdueInterestRate", getOverdueInterestRate())
            .append("annualRateAdjustDate", getAnnualRateAdjustDate())
            .append("repricingDate", getRepricingDate())
            .append("repaymentMethod", getRepaymentMethod())
            .append("debtRealizationCost", getDebtRealizationCost())
            .append("petitionBasisId", getPetitionBasisId())
            .append("jurisdiction", getJurisdiction())
            .append("interestRate2", getInterestRate2())
            .append("penaltyInterest2", getPenaltyInterest2())
            .append("compoundInterest", getCompoundInterest())
            .append("repaymentMethod2", getRepaymentMethod2())
            .append("attorneyFee2", getAttorneyFee2())
            .append("hasServiceAddress", getHasServiceAddress())
            .append("serviceAddress", getServiceAddress())
            .append("repaidPrincipal", getRepaidPrincipal())
            .append("annualInterestIncome", getAnnualInterestIncome())
            .append("lastRepaymentDate", getLastRepaymentDate())
            .append("totalOverdueAmount", getTotalOverdueAmount())
            .append("cardApplicationDate", getCardApplicationDate())
            .append("creditCardNum", getCreditCardNum())
            .append("feeCalculationStandard", getFeeCalculationStandard())
            .append("breachOfContract", getBreachOfContract())
            .append("terminationConditions", getTerminationConditions())
            .append("petitionBasis", getPetitionBasis())
            .append("promptDescription", getPromptDescription())
            .append("creditLine", getCreditLine())
            .append("creditLineValidPeriod", getCreditLineValidPeriod())
            .append("contractedBankCardNum", getContractedBankCardNum())
            .append("numberOfLoans", getNumberOfLoans())
            .append("guaranteeContractName", getGuaranteeContractName())
            .append("guaranteeSigningDate", getGuaranteeSigningDate())
            .append("guaranteeStartDate", getGuaranteeStartDate())
            .append("guaranteeDeadline", getGuaranteeDeadline())
            .append("guaranteeMaxAmount", getGuaranteeMaxAmount())
            .append("numberOfLoans2", getNumberOfLoans2())
            .append("guarantor", getGuarantor())
            .append("indictment", getIndictment())
            .append("lawFirmAuthorizationLetter", getLawFirmAuthorizationLetter())
            .append("supplementaryEvidenceIds", getSupplementaryEvidenceIds())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
